package com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api;

import java.util.Set;

/**
 * Created by lyndon on 2018/5/29.
 */
public interface IdentifiableType<X> extends ManagedType<X> {
    <Y> SingularAttribute<? super X, Y> getId(Class<Y> var1);

    <Y> SingularAttribute<X, Y> getDeclaredId(Class<Y> var1);

    <Y> SingularAttribute<? super X, Y> getVersion(Class<Y> var1);

    <Y> SingularAttribute<X, Y> getDeclaredVersion(Class<Y> var1);

    IdentifiableType<? super X> getSupertype();

    boolean hasSingleIdAttribute();

    boolean hasVersionAttribute();

    Set<SingularAttribute<? super X, ?>> getIdClassAttributes();

    Type<?> getIdType();
}
